package quatrecentvingtetun;

import java.util.ArrayList;
import java.util.Iterator;

/**
 * Created by IntelliJ IDEA.
 * User: seeme
 * Date: 23 mars 2009
 * Time: 10:21:09
 * To change this template use File | Settings | File Templates.
 */
public class Charge {
    private ArrayList<Joueur> j;
    private int pot;
    public Charge(int nb,  ArrayList<Joueur> j){
        pot = nb;
        this.j = j;
    }
   
    public void Start(){

        while(pot!=0){
            for (int i=0;i<j.size();i++){
                    System.out.println(j.get(i).getNom()+" lance les dés.");
                    j.get(i).lancer(); //lancer() lance trois dés , les tri en appellant la méthodes de joueur TriEntier(),
                     // et  stock la figure obtenu dans l'attribut correspondant
                    System.out.println(j.get(i).getNom()+ " obtient: "+j.get(i).getFigure());
                    j.get(i).getFigure().CalculScore();   //calcul du score (finir test et coder fonction ensuite)
                    System.out.println("Score:"+j.get(i).getFigure().getScore());
            }

            //distribution  des jetons
           donneJetons(this.EvalVainqueur(),this.EvalPerdant());   //problème, comment récupérer le joueur  ayant reçu les jetons
            // puisque c'est le pot qui donne des jetons et non le vainqueur 

            System.out.println("Jetons:");
             for (int i=0;i<j.size();i++){
                    System.out.println(j.get(i).getNom()+" : "+j.get(i).getJetons());
             }
            
        }
    }

        public int EvalVainqueur(){
           Joueur jou;
            int maxi =j.get(0).getFigure().getScore();
            int indice=0;
            Iterator<Joueur> it = j.iterator();

            while(it.hasNext()){
                 jou=it.next();
                if (jou.getFigure().getScore() > maxi){
                   maxi=jou.getFigure().getScore();
                   indice=j.indexOf(jou);
               }
            }

        return indice;
    }

        public int EvalPerdant(){
             Joueur jou;
            int mini =j.get(0).getFigure().getScore();
            int indice=0;
            int nb = 0;
            Iterator<Joueur> it = j.iterator();
             Iterator<Joueur> itbis = it;
            while(it.hasNext()){
                 jou=it.next();// je comprends pas pourquoi ça plante...
                if (jou.getFigure().getScore() <= mini){
                   mini=jou.getFigure().getScore();
                  indice=j.indexOf(jou);
               }
            }
            
            while(itbis.hasNext()){
                 jou=it.next();// je comprends pas pourquoi ça plante...
                if (jou.getFigure().getScore() == mini){
                    nb++;
               }
            }

        return (nb == 1?indice:-1);
    }

    public void donneJetons(int vainqueur, int perdant){
            if(pot < j.get(vainqueur).getFigure().getScore()){
               j.get(perdant).setJetons(j.get(perdant).getJetons()+pot);
                pot = 0;
            }else{
                pot -= j.get(vainqueur).getFigure().getScore();
                j.get(perdant).setJetons(j.get(perdant).getJetons()+j.get(vainqueur).getFigure().getScore());
        }
       
    }

    public int getPot(){
        return pot;
    }

    public void setPot(int n){
        pot=n;
        
    }

    public ArrayList<Joueur> getListe(){
        return j;
    }
 }
